package com.ruben.simplescaffold.utils;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;

import java.util.Optional;

/**
 * 枚举工具类
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/5/20 0020 11:17
 */
public class EnumUtils {
    private EnumUtils() {
    }

    /**
     * valueOf
     *
     * @param enumType 枚举类型
     * @param value    值
     * @return E
     * @author <achao1441470436@gmail.com>
     * @since 2021/5/20 0020 11:24
     */
    public static <E extends Enum<E>> E valueOf(Class<E> enumType, String value) {
        return Optional.ofNullable(value)
                .filter(StringUtils::isNotBlank)
                .filter(t -> !"null".equalsIgnoreCase(t))
                .map(v -> Enum.valueOf(enumType, value))
                .orElse(enumType.getEnumConstants()[0]);
    }
}
